package com.app.mapper.article;

import com.app.domain.bo.article.ArticleCommentBo;
import com.app.domain.po.article.ArticleCommentPo;
import com.app.domain.vo.article.ArticleCommentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * ArticleCommentMapper
 */
@Component
public interface ArticleCommentMapper extends BaseMapper<ArticleCommentPo> {

    /**
     * 查询全部评论
     *
     * @param bo 入参
     */
    List<ArticleCommentVo> selectAllComment(@Param("bo") ArticleCommentBo bo);

    /**
     * 查询用户评论
     *
     * @param userId 用户ID
     */
    List<ArticleCommentVo> selectUserComment(@Param("userId") Long userId);

    /**
     * 根据文章ID查询主评论
     *
     * @param articleId 文章ID
     */
    List<ArticleCommentVo> selectParentComment(@Param("articleId") Long articleId);

    /**
     * 根据文章ID查询子评论
     *
     * @param articleId 文章ID
     */
    List<ArticleCommentVo> selectSubComment(@Param("articleId") Long articleId);

    /**
     * 根据MID查询子评论
     *
     * @param mid 主评论id
     */
    List<ArticleCommentVo> selectSubCommentsByMid(@Param("articleId") Long articleId, @Param("mid") Long mid);

    /**
     * 根据父级ID查询子级评论
     *
     * @param pid 父级id
     */
    List<ArticleCommentVo> selectSubCommentsByPid(@Param("pid") Long pid);

    /**
     * 更新评论数量
     *
     * @param commentId 评论ID
     * @param count     数量
     */
    void updateSubCommentCount(@Param("commentId") Long commentId, @Param("count") Integer count);

    /**
     * 更新评论点赞
     *
     * @param commentId 评论ID
     */
    void updateCommentLikeCount(@Param("commentId") Long commentId);

}